package com.ruoyi.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * OJ题目对象 oj_problems
 * 
 * @author ruoyi
 * @date 2025-08-29
 */
public class OjProblems extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** OJ题目ID */
    private Long ojProblemId;

    /** 标题 */
    @Excel(name = "标题")
    private String problemTitle;

    /** 描述 */
    @Excel(name = "描述")
    private String problemDescription;

    /** 难度等级 */
    @Excel(name = "难度等级")
    private String difficultyLevel;

    /** 题目类型 */
    @Excel(name = "题目类型")
    private String problemType;

    /** 知识点 */
    @Excel(name = "知识点")
    private String knowledgePoints;

    /** 时间限制(ms) */
    @Excel(name = "时间限制(ms)")
    private Long timeLimit;

    /** 内存限制(MB) */
    @Excel(name = "内存限制(MB)")
    private Long memoryLimit;

    /** 支持编程语言 */
    @Excel(name = "支持编程语言")
    private String supportedLanguages;

    /** 创建人ID */
    @Excel(name = "创建人ID")
    private Long creatorId;

    /** 状态 */
    @Excel(name = "状态")
    private String status;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    public void setOjProblemId(Long ojProblemId) 
    {
        this.ojProblemId = ojProblemId;
    }

    public Long getOjProblemId() 
    {
        return ojProblemId;
    }

    public void setProblemTitle(String problemTitle) 
    {
        this.problemTitle = problemTitle;
    }

    public String getProblemTitle() 
    {
        return problemTitle;
    }

    public void setProblemDescription(String problemDescription) 
    {
        this.problemDescription = problemDescription;
    }

    public String getProblemDescription() 
    {
        return problemDescription;
    }

    public void setDifficultyLevel(String difficultyLevel) 
    {
        this.difficultyLevel = difficultyLevel;
    }

    public String getDifficultyLevel() 
    {
        return difficultyLevel;
    }

    public void setProblemType(String problemType) 
    {
        this.problemType = problemType;
    }

    public String getProblemType() 
    {
        return problemType;
    }

    public void setKnowledgePoints(String knowledgePoints) 
    {
        this.knowledgePoints = knowledgePoints;
    }

    public String getKnowledgePoints() 
    {
        return knowledgePoints;
    }

    public void setTimeLimit(Long timeLimit) 
    {
        this.timeLimit = timeLimit;
    }

    public Long getTimeLimit() 
    {
        return timeLimit;
    }

    public void setMemoryLimit(Long memoryLimit) 
    {
        this.memoryLimit = memoryLimit;
    }

    public Long getMemoryLimit() 
    {
        return memoryLimit;
    }

    public void setSupportedLanguages(String supportedLanguages) 
    {
        this.supportedLanguages = supportedLanguages;
    }

    public String getSupportedLanguages() 
    {
        return supportedLanguages;
    }

    public void setCreatorId(Long creatorId) 
    {
        this.creatorId = creatorId;
    }

    public Long getCreatorId() 
    {
        return creatorId;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("ojProblemId", getOjProblemId())
            .append("problemTitle", getProblemTitle())
            .append("problemDescription", getProblemDescription())
            .append("difficultyLevel", getDifficultyLevel())
            .append("problemType", getProblemType())
            .append("knowledgePoints", getKnowledgePoints())
            .append("timeLimit", getTimeLimit())
            .append("memoryLimit", getMemoryLimit())
            .append("supportedLanguages", getSupportedLanguages())
            .append("creatorId", getCreatorId())
            .append("status", getStatus())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
